precision mediump float;
uniform float uTime;
// uv传递到片元着色器 varying是从顶点着色器传递到片元着色器的变量
varying vec2 vUv;
// projectionMatrix 投影矩阵；viewMatrix 视图矩阵；modelMatrix 模型矩阵；这些都是内置的uniform，使用ShaderMaterial会自动到GLSL shader代码中。使用RawShaderMaterial不会自动添加，需要手动接收。
// gl_Position是一个内置变量，它表示经过投影、视图和模型变换后的顶点位置。
void main(){
    vUv = uv;
    vec4 modelPosition = modelMatrix * vec4(position, 1.0);
    modelPosition.z = sin((modelPosition.x + uTime) * 10.0) * 0.05;
    modelPosition.z += sin((modelPosition.y + uTime) * 10.0) * 0.05;
    gl_Position = projectionMatrix * viewMatrix * modelPosition;
}
